/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modele;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * Classe représentant le plateau du jeu
 * @author EpsilonE
 */
public class Plateau 
{
    private HashMap<Integer,Case> cases;
    
    /**
     * Le constructeur initialise le plateau : il définit toutes les cases du jeu
     */
    public Plateau()
    {
        cases = new HashMap<Integer,Case>();
        
        //Les angles; 4
        cases.put(0, new Depart("Depart", 0, 200, false, false));
        cases.put(10, new SecherDS("SecherDS", 10, false, false));
        cases.put(40, new DS("DS", 10, 50, false, false));
        cases.put(20, new Cafeteria("Cafeteria", 20, false, false));
        cases.put(30, new AllerEnDS("AllerEnDS", 30, false, false));
        
        //Les services; 2
        cases.put(12, new Service("Administration", 12, Groupe.Service, 150, 1, true, true));
        cases.put(28, new Service("Informatique", 28, Groupe.Service, 150, 1, true, true));
        
        //Les Parkings; 4
        cases.put(5, new Parking("Parking PUIO", 5, Groupe.Parking, 200, 25, true, true));
        cases.put(15, new Parking("Parking SUPELEC", 15, Groupe.Parking, 200, 25, true, true));
        cases.put(25, new Parking("Parking MDI", 25, Groupe.Parking, 200, 25, true, true));
        cases.put(35, new Parking("Parking McDo", 35, Groupe.Parking, 200, 25, true, true));
        
        //Les taxes; 2
        cases.put(4, new Taxe("Frais de scolarite", 4, 200, false, false));
        cases.put(38, new Taxe("Frais McDo", 38, 75, false, false));
        
        //Creation des cartes à piocher
        ArrayList<Carte> listCarte = new ArrayList<Carte>();
        
        Carte g1 = new Gain("Erreur de SUPELEC en votre faveur. Vous recevez 100 euros sur votre Moneo.", 100);
        Carte g2 = new Gain("Erreur de SUPELEC en votre faveur. Vous recevez 100 euros sur votre Moneo.", 100);
        listCarte.add(g1);
        listCarte.add(g2);
        
        Carte p1 = new Perte("Vous avez des dettes en repas CROUS. Vous remboursez le tout pour 100 euros.", 100);
        Carte p2 = new Perte("Vous avez des dettes en repas CROUS. Vous remboursez le tout pour 100 euros.", 100);
        listCarte.add(p1);
        listCarte.add(p2);
        
        Carte d1 = new Deplacement("Rendez vous à la case départ", 0);
        Carte d2 = new Deplacement("Rendez vous à la cafeteria", 20);
        listCarte.add(d1);
        listCarte.add(d2);
        
        Carte DS1 = new DispenseDS("Vous recevez une dispense pour le prochain DS");
        Carte DS2 = new DispenseDS("Vous recevez une dispense pour le prochain DS");
        listCarte.add(DS1);
        listCarte.add(DS2);
        
        //Les pioches; 6
        cases.put(2, new Pioche("Groupe FB", 2, listCarte, false, false));
        cases.put(17, new Pioche("Groupe FB", 17, listCarte, false, false));
        cases.put(33, new Pioche("Groupe FB", 33, listCarte, false, false));
        cases.put(7, new Pioche("Secretaire", 7, listCarte, false, false));
        cases.put(22, new Pioche("Secretaire", 22, listCarte, false, false));
        cases.put(36, new Pioche("Secretaire", 36, listCarte, false, false));
        
        //Les proprietes; 22
        //Rose
        cases.put(1, new Salle("A1", 1, Groupe.Rose, 60, 2, 50, true, true));
        cases.put(3, new Salle("A2", 3, Groupe.Rose, 60, 4, 50, true, true));
        
        //BleuClair
        cases.put(6, new Salle("B1", 6, Groupe.BleuClair, 100, 6, 50, true, true));
        cases.put(8, new Salle("B2", 8, Groupe.BleuClair, 100, 6, 50, true, true));
        cases.put(9, new Salle("B3", 9, Groupe.BleuClair, 120, 8, 50, true, true));
        
        //Violet
        cases.put(11, new Salle("C1", 11, Groupe.Violet, 140, 10, 100, true, true));
        cases.put(13, new Salle("C2", 13, Groupe.Violet, 140, 10, 100, true, true));
        cases.put(14, new Salle("C3", 14, Groupe.Violet, 160, 12, 100, true, true));
        
        //Orange
        cases.put(16, new Salle("D1", 16, Groupe.Orange, 180, 14, 100, true, true));
        cases.put(18, new Salle("D2", 18, Groupe.Orange, 180, 14, 100, true, true));
        cases.put(19, new Salle("D3", 19, Groupe.Orange, 200, 16, 100, true, true));
        
        //Rouge
        cases.put(21, new Salle("E1", 21, Groupe.Rouge, 220, 18, 150, true, true));
        cases.put(23, new Salle("E2", 23, Groupe.Rouge, 220, 18, 150, true, true));
        cases.put(24, new Salle("E3", 24, Groupe.Rouge, 240, 20, 150, true, true));
        
        //Jaune
        cases.put(26, new Salle("F1", 26, Groupe.Jaune, 260, 22, 150, true, true));
        cases.put(27, new Salle("F2", 27, Groupe.Jaune, 260, 22, 150, true, true));
        cases.put(29, new Salle("F3", 29, Groupe.Jaune, 280, 24, 150, true, true));
        
        //Vert
        cases.put(31, new Salle("G1", 31, Groupe.Vert, 300, 26, 200, true, true));
        cases.put(32, new Salle("G2", 32, Groupe.Vert, 300, 26, 200, true, true));
        cases.put(34, new Salle("G3", 34, Groupe.Vert, 320, 28, 200, true, true));
        
        //BleuFonce
        cases.put(37, new Salle("H1", 37, Groupe.BleuFonce, 350, 35, 200, true, true));
        cases.put(39, new Salle("H2", 39, Groupe.BleuFonce, 400, 50, 200, true, true)); 
    }

    /**
     * @return the cases
     */
    public HashMap<Integer,Case> getCases() 
    {
        return cases;
    }
}
